/*************************************************************************
    > File Name: TAKE_B.c
    > Author: Ykk
    > Mail: 3393579535@qq.com 
    > Created Time: 2023年04月17日 星期一 19时57分09秒
 ************************************************************************/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
#include<fcntl.h>

#define SIZE 128 
//先写后读
//以只写的方式打开管道1
//以只读的方式打开管道2

int main()
{
	int fdr = -1;
	int fdw = -1;
	int ret = -1;
	char buf[SIZE];

	//以只写的方式打开管道fifo_one
	fdw = open("fifo_one",O_WRONLY);
	if(-1 == fdw)
	{
		perror("open");
		return 1;
	}
	printf("以只写的方式打开管道fifo_one...\n");

	//以只读的方式打开管道fifo_two
	fdr = open("fifo_two",O_RDONLY|O_NONBLOCK);
	if(-1 == fdr)
	{
		perror("open");
		return 1;
	}
	printf("以只读的方式打开管道fifo_two...\n");

	//循环读写
	while(1)
	{

		//写管道fifo_one
		memset(buf,0,SIZE);
		fgets(buf,SIZE,stdin);
		//去掉最后一个换行符
		if('\n' == buf[strlen(buf) - 1])
		{
			buf[strlen(buf) - 1] = '\0';
		}

		ret = write(fdw,buf,strlen(buf));
		if(ret <= 0)
		{
			perror("write");
			break;
		}
		printf("write ret:%d\n",ret);


		//读管道fifo_two
		memset(buf,0,SIZE);
		ret = read(fdr,buf,SIZE);
		if(0 >= ret)
		{
			perror("read");
			break;
		}
		printf("read: %s\n",buf);
	}

	//关闭文件描述符
	close(fdr);
	close(fdw);
	return 0;
}
